{ "cells": [ { "cell_type": "markdown", "id": "2438392d", "metadata": {}, "source": [ "# 敏感性分析" ] }, { "cell_type": "code", "execution_count": 2, "id": "3e4acc8b", "metadata": { "ExecuteTime": { "end_time": "2024-09-19T10:30:24.657709Z", "start_time": "2024-09-19T10:30:24.642068Z" } }, "outputs": [], "source": [ "import numpy as np\n", "\n", "# 定义数据\n", "data = np.array([\n", " [75, 91, 83, 67, 88], # a\n", " [92, 78, 66, 35, 93], # b\n", " [59, 72, 66, 90, 89], # c\n", " [85, 71, 53, 67, 98], # d\n", " [77, 68, 69, 75, 99], # e\n", " [69, 72, 85, 90, 79], # f\n", " [75, 81, 83, 97, 88], # g\n", " [98, 78, 66, 65, 93], # h\n", " [71, 53, 67, 90, 89], # i\n", " [75, 81, 83, 67, 88], # j\n", " [83, 67, 88, 35, 93], # k\n", " [59, 72, 66, 90, 89], # l\n", " [75, 91, 71, 53, 67], # m\n", " [92, 91, 83, 67, 93], # n\n", " [59, 72, 91, 83, 89], # o\n", "])\n" ] }, { "cell_type": "code", "execution_count": 3, "id": "25177a85", "metadata": { "ExecuteTime": { "end_time": "2024-09-19T10:31:41.704777Z", "start_time": "2024-09-19T10:31:41.689378Z" } }, "outputs": [], "source": [ "weights =np.array([0.18173096,0.13125534,0.1494729,0.46453017,0.07301064])" ] }, { "cell_type": "code", "execution_count": 4, "id": "8ae12b9f", "metadata": { "ExecuteTime": { "end_time": "2024-09-19T10:32:06.759357Z", "start_time": "2024-09-19T10:32:06.727921Z" } }, "outputs": [ { "data": { "text/plain": [ "array([[75.52876635],\n", " [59.87092171],\n", " [78.34338478],\n", " [70.96688855],\n", " [75.30009325],\n", " [82.27057308],\n", " [88.15211805],\n", " [74.89721257],\n", " [78.17977774],\n", " [74.21621295],\n", " [60.07993813],\n", " [78.34338478],\n", " [65.69844573],\n", " [78.98324587],\n", " [78.82849609]])" ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ "data@weights.reshape(-1,1)" ] }, { "cell_type": "code", "execution_count": 5, "id": "fbb886e4", "metadata": { "ExecuteTime": { "end_time": "2024-09-19T10:33:43.028779Z", "start_time": "2024-09-19T10:33:42.619757Z" } }, "outputs": [], "source": [ "import pandas as pd" ] }, { "cell_type": "code", "execution_count": 6, "id": "04ff5148", "metadata": { "ExecuteTime": { "end_time": "2024-09-19T10:35:31.731327Z", "start_time": "2024-09-19T10:35:31.700048Z" } }, "outputs": [], "source": [ "index = list('abcdefghijklmno')\n", "columns = ['M','Mo','Co','W','C']\n", "df = pd.DataFrame(data,index=index,columns=columns)" ] }, { "cell_type": "code", "execution_count": 7, "id": "787f6271", "metadata": { "ExecuteTime": { "end_time": "2024-09-19T10:35:33.344805Z", "start_time": "2024-09-19T10:35:33.297490Z" } }, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
MMoCoWC
a7591836788
b9278663593
c5972669089
d8571536798
e7768697599
f6972859079
g7581839788
h9878666593
i7153679089
j7581836788
k8367883593
l5972669089
m7591715367
n9291836793
o5972918389
\n", "
" ], "text/plain": [ " M Mo Co W C\n", "a 75 91 83 67 88\n", "b 92 78 66 35 93\n", "c 59 72 66 90 89\n", "d 85 71 53 67 98\n", "e 77 68 69 75 99\n", "f 69 72 85 90 79\n", "g 75 81 83 97 88\n", "h 98 78 66 65 93\n", "i 71 53 67 90 89\n", "j 75 81 83 67 88\n", "k 83 67 88 35 93\n", "l 59 72 66 90 89\n", "m 75 91 71 53 67\n", "n 92 91 83 67 93\n", "o 59 72 91 83 89" ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df" ] }, { "cell_type": "code", "execution_count": 8, "id": "134cb8ed", "metadata": { "ExecuteTime": { "end_time": "2024-09-19T10:37:00.396484Z", "start_time": "2024-09-19T10:37:00.364869Z" } }, "outputs": [], "source": [ "df1 = df.copy()\n", "df1['Score'] = df.values@weights" ] }, { "cell_type": "code", "execution_count": 10, "id": "548c29ca", "metadata": { "ExecuteTime": { "end_time": "2024-09-19T10:37:24.008150Z", "start_time": "2024-09-19T10:37:23.962073Z" } }, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
MMoCoWCScore
g758183978888.152118
f697285907982.270573
n929183679378.983246
o597291838978.828496
c597266908978.343385
l597266908978.343385
i715367908978.179778
a759183678875.528766
e776869759975.300093
h987866659374.897213
j758183678874.216213
d857153679870.966889
m759171536765.698446
k836788359360.079938
b927866359359.870922
\n", "
" ], "text/plain": [ " M Mo Co W C Score\n", "g 75 81 83 97 88 88.152118\n", "f 69 72 85 90 79 82.270573\n", "n 92 91 83 67 93 78.983246\n", "o 59 72 91 83 89 78.828496\n", "c 59 72 66 90 89 78.343385\n", "l 59 72 66 90 89 78.343385\n", "i 71 53 67 90 89 78.179778\n", "a 75 91 83 67 88 75.528766\n", "e 77 68 69 75 99 75.300093\n", "h 98 78 66 65 93 74.897213\n", "j 75 81 83 67 88 74.216213\n", "d 85 71 53 67 98 70.966889\n", "m 75 91 71 53 67 65.698446\n", "k 83 67 88 35 93 60.079938\n", "b 92 78 66 35 93 59.870922" ] }, "execution_count": 10, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df1.sort_values(by='Score',ascending=False) # g,f,n,o,c" ] }, { "cell_type": "code", "execution_count": 11, "id": "a84cafaf", "metadata": { "ExecuteTime": { "end_time": "2024-09-19T10:45:01.629666Z", "start_time": "2024-09-19T10:45:01.598269Z" } }, "outputs": [], "source": [ "def adjust_weight(original_weights,adjust_ind,p=0.1):\n", " w_adj = original_weights[adjust_ind]\n", " w_adj_new = w_adj*(1+p)\n", " w_other_total_new = 1-w_adj_new\n", " w_other_total_old = 1-w_adj\n", " new_weights = np.zeros(len(original_weights))\n", " r = w_other_total_new/w_other_total_old\n", " for i in range(len(original_weights)):\n", " if i == adjust_ind:\n", " new_weights[i] = w_adj_new\n", " else:\n", " new_weights[i] = original_weights[i]*r\n", " return new_weights" ] }, { "cell_type": "code", "execution_count": 12, "id": "8e3e8897", "metadata": { "ExecuteTime": { "end_time": "2024-09-19T10:45:23.658969Z", "start_time": "2024-09-19T10:45:23.627806Z" } }, "outputs": [ { "data": { "text/plain": [ "array([0.16596546, 0.11986869, 0.13650584, 0.51098319, 0.06667683])" ] }, "execution_count": 12, "metadata": {}, "output_type": "execute_result" } ], "source": [ "adjust_weight(weights,3,0.1)" ] }, { "cell_type": "code", "execution_count": 13, "id": "32341b84", "metadata": { "ExecuteTime": { "end_time": "2024-09-19T10:45:28.004662Z", "start_time": "2024-09-19T10:45:27.989036Z" } }, "outputs": [ { "data": { "text/plain": [ "array([0.18173096, 0.13125534, 0.1494729 , 0.46453017, 0.07301064])" ] }, "execution_count": 13, "metadata": {}, "output_type": "execute_result" } ], "source": [ "weights" ] }, { "cell_type": "code", "execution_count": 17, "id": "8dae8a68", "metadata": { "ExecuteTime": { "end_time": "2024-09-19T10:53:10.029741Z", "start_time": "2024-09-19T10:53:09.966631Z" } }, "outputs": [], "source": [ "parray = np.linspace(-0.1,0.1,20)\n", "glist = []\n", "flist = []\n", "nlist = []\n", "olist = []\n", "clist = []\n", "for p in parray:\n", " weights_adj =adjust_weight(weights,3,p=p)\n", " df1 = df.copy()\n", " df1['Score'] = df.values@weights_adj.reshape(-1,1)\n", " g = df1.loc['g','Score']\n", " glist.append(g)\n", " f = df1.loc['f','Score']\n", " flist.append(f)\n", " n = df1.loc['n','Score']\n", " nlist.append(n)\n", " o = df1.loc['o','Score']\n", " olist.append(o)\n", " c = df1.loc['c','Score']\n", " clist.append(c)" ] }, { "cell_type": "code", "execution_count": 18, "id": "62dce1dc", "metadata": { "ExecuteTime": { "end_time": "2024-09-19T10:53:12.891489Z", "start_time": "2024-09-19T10:53:12.630541Z" } }, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 18, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "import matplotlib.pyplot as plt\n", "xarray = 0.46453017*(1+parray)\n", "plt.plot(xarray,glist,label='g')\n", "plt.plot(xarray,flist,label='f')\n", "plt.plot(xarray,nlist,label='n')\n", "plt.plot(xarray,olist,label='o')\n", "plt.plot(xarray,clist,label='c')\n", "plt.legend()" ] }, { "cell_type": "code", "execution_count": 22, "id": "f7c60c7d", "metadata": { "ExecuteTime": { "end_time": "2024-09-19T11:03:36.573828Z", "start_time": "2024-09-19T11:03:36.542318Z" } }, "outputs": [], "source": [ "parray = np.linspace(-0.1,0.1,5)\n", "glist = []\n", "flist = []\n", "nlist = []\n", "olist = []\n", "clist = []\n", "for p in parray:\n", " weights_adj =adjust_weight(weights,3,p=p)\n", " df1 = df.copy()\n", " df1['Score'] = df.values@weights_adj.reshape(-1,1)\n", " df1['Rank'] = df1['Score'].rank(ascending=False)\n", " g = df1.loc['g','Rank']\n", " glist.append(g)\n", " f = df1.loc['f','Rank']\n", " flist.append(f)\n", " n = df1.loc['n','Rank']\n", " nlist.append(n)\n", " o = df1.loc['o','Rank']\n", " olist.append(o)\n", " c = df1.loc['c','Rank']\n", " clist.append(c)" ] }, { "cell_type": "code", "execution_count": 24, "id": "29731474", "metadata": { "ExecuteTime": { "end_time": "2024-09-19T11:04:24.849905Z", "start_time": "2024-09-19T11:04:24.661165Z" } }, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 24, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "import matplotlib.pyplot as plt\n", "xarray = 0.46453017*(1+parray)\n", "plt.plot(xarray,glist,label='g',marker='o')\n", "plt.plot(xarray,flist,label='f',marker='o')\n", "plt.plot(xarray,nlist,label='n',marker='o')\n", "plt.plot(xarray,olist,label='o',marker='o')\n", "plt.plot(xarray,clist,label='c',marker='o')\n", "plt.legend()" ] }, { "cell_type": "code", "execution_count": 25, "id": "5dda7dc5", "metadata": { "ExecuteTime": { "end_time": "2024-09-19T11:07:05.750984Z", "start_time": "2024-09-19T11:07:05.719850Z" } }, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
MMoCoWCScoreRank
a759183678876.2686538.0
b927866359362.02852115.0
c597266908977.3321515.5
d857153679871.31102412.0
e776869759975.32612710.0
f697285907981.6000312.0
g758183978887.3845481.0
h987866659375.7558149.0
i715367908977.1543517.0
j758183678874.84223311.0
k836788359362.25567014.0
l597266908977.3321515.5
m759171536766.80006013.0
n929183679380.0228153.0
o597291838978.4666104.0
\n", "
" ], "text/plain": [ " M Mo Co W C Score Rank\n", "a 75 91 83 67 88 76.268653 8.0\n", "b 92 78 66 35 93 62.028521 15.0\n", "c 59 72 66 90 89 77.332151 5.5\n", "d 85 71 53 67 98 71.311024 12.0\n", "e 77 68 69 75 99 75.326127 10.0\n", "f 69 72 85 90 79 81.600031 2.0\n", "g 75 81 83 97 88 87.384548 1.0\n", "h 98 78 66 65 93 75.755814 9.0\n", "i 71 53 67 90 89 77.154351 7.0\n", "j 75 81 83 67 88 74.842233 11.0\n", "k 83 67 88 35 93 62.255670 14.0\n", "l 59 72 66 90 89 77.332151 5.5\n", "m 75 91 71 53 67 66.800060 13.0\n", "n 92 91 83 67 93 80.022815 3.0\n", "o 59 72 91 83 89 78.466610 4.0" ] }, "execution_count": 25, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df1 = df.copy()\n", "df1['Score'] = df.values@adjust_weight(weights,3,p=-0.1).reshape(-1,1)\n", "df1['Rank'] = df1['Score'].rank(ascending=False)\n", "df1" ] }, { "cell_type": "code", "execution_count": 21, "id": "c0975f4f", "metadata": { "ExecuteTime": { "end_time": "2024-09-19T11:02:58.195950Z", "start_time": "2024-09-19T11:02:58.164264Z" } }, "outputs": [ { "data": { "text/plain": [ "a 9.0\n", "b 15.0\n", "c 3.5\n", "d 12.0\n", "e 8.0\n", "f 2.0\n", "g 1.0\n", "h 10.0\n", "i 5.0\n", "j 11.0\n", "k 14.0\n", "l 3.5\n", "m 13.0\n", "n 7.0\n", "o 6.0\n", "Name: Score, dtype: float64" ] }, "execution_count": 21, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df1['Score'].rank(ascending=False)" ] }, { "cell_type": "markdown", "id": "334cfefe", "metadata": {}, "source": [ "# 熵权法" ] }, { "cell_type": "code", "execution_count": 26, "id": "f6cdaea4", "metadata": { "ExecuteTime": { "end_time": "2024-09-19T11:18:18.524231Z", "start_time": "2024-09-19T11:18:18.508768Z" } }, "outputs": [], "source": [ "def entropy(plist):\n", " s = 0\n", " for p in plist:\n", " s = s-p*np.log(p)\n", " return s" ] }, { "cell_type": "code", "execution_count": 27, "id": "50bed387", "metadata": { "ExecuteTime": { "end_time": "2024-09-19T11:18:36.657786Z", "start_time": "2024-09-19T11:18:36.642160Z" } }, "outputs": [ { "data": { "text/plain": [ "0.639031859650177" ] }, "execution_count": 27, "metadata": {}, "output_type": "execute_result" } ], "source": [ "entropy([0.1,0.1,0.8])" ] }, { "cell_type": "code", "execution_count": 28, "id": "9132f408", "metadata": { "ExecuteTime": { "end_time": "2024-09-19T11:18:55.914674Z", "start_time": "2024-09-19T11:18:55.903161Z" } }, "outputs": [ { "data": { "text/plain": [ "1.0888999753452238" ] }, "execution_count": 28, "metadata": {}, "output_type": "execute_result" } ], "source": [ "entropy([0.3,0.4,0.3])" ] }, { "cell_type": "code", "execution_count": 29, "id": "1d513a77", "metadata": { "ExecuteTime": { "end_time": "2024-09-19T11:19:10.114054Z", "start_time": "2024-09-19T11:19:10.082461Z" } }, "outputs": [ { "data": { "text/plain": [ "1.0296530140645737" ] }, "execution_count": 29, "metadata": {}, "output_type": "execute_result" } ], "source": [ "entropy([0.5,0.2,0.3])" ] }, { "cell_type": "code", "execution_count": 30, "id": "878e4216", "metadata": { "ExecuteTime": { "end_time": "2024-09-19T11:23:24.578915Z", "start_time": "2024-09-19T11:23:24.563758Z" } }, "outputs": [ { "data": { "text/plain": [ "1.0986122886681096" ] }, "execution_count": 30, "metadata": {}, "output_type": "execute_result" } ], "source": [ "entropy([1/3,1/3,1/3])" ] }, { "cell_type": "code", "execution_count": 31, "id": "6fb1153b", "metadata": { "ExecuteTime": { "end_time": "2024-09-19T11:23:31.576661Z", "start_time": "2024-09-19T11:23:31.545380Z" } }, "outputs": [ { "data": { "text/plain": [ "1.0986122886681098" ] }, "execution_count": 31, "metadata": {}, "output_type": "execute_result" } ], "source": [ "np.log(3)" ] }, { "cell_type": "code", "execution_count": 32, "id": "e8cf417d", "metadata": { "ExecuteTime": { "end_time": "2024-09-19T11:24:30.032418Z", "start_time": "2024-09-19T11:24:30.000893Z" } }, "outputs": [ { "data": { "text/plain": [ "1.0" ] }, "execution_count": 32, "metadata": {}, "output_type": "execute_result" } ], "source": [ "np.log10(10)" ] }, { "cell_type": "code", "execution_count": 33, "id": "f04b10d6", "metadata": { "ExecuteTime": { "end_time": "2024-09-19T11:31:01.843076Z", "start_time": "2024-09-19T11:31:01.811582Z" } }, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
MMoCoWC
a7591836788
b9278663593
c5972669089
d8571536798
e7768697599
f6972859079
g7581839788
h9878666593
i7153679089
j7581836788
k8367883593
l5972669089
m7591715367
n9291836793
o5972918389
\n", "
" ], "text/plain": [ " M Mo Co W C\n", "a 75 91 83 67 88\n", "b 92 78 66 35 93\n", "c 59 72 66 90 89\n", "d 85 71 53 67 98\n", "e 77 68 69 75 99\n", "f 69 72 85 90 79\n", "g 75 81 83 97 88\n", "h 98 78 66 65 93\n", "i 71 53 67 90 89\n", "j 75 81 83 67 88\n", "k 83 67 88 35 93\n", "l 59 72 66 90 89\n", "m 75 91 71 53 67\n", "n 92 91 83 67 93\n", "o 59 72 91 83 89" ] }, "execution_count": 33, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df" ] }, { "cell_type": "code", "execution_count": 35, "id": "665d4606", "metadata": { "ExecuteTime": { "end_time": "2024-09-19T11:32:05.997048Z", "start_time": "2024-09-19T11:32:05.980942Z" } }, "outputs": [], "source": [ "# 进行归一化处理\n", "p = df/df.sum()" ] }, { "cell_type": "code", "execution_count": 38, "id": "9fa07c17", "metadata": { "ExecuteTime": { "end_time": "2024-09-19T11:33:14.767078Z", "start_time": "2024-09-19T11:33:14.735953Z" } }, "outputs": [], "source": [ "# 计算信息熵\n", "k = 1/np.log(len(df))\n", "E = k*(-p*np.log(p)).sum()" ] }, { "cell_type": "code", "execution_count": 39, "id": "26e6c22c", "metadata": { "ExecuteTime": { "end_time": "2024-09-19T11:33:17.927530Z", "start_time": "2024-09-19T11:33:17.896087Z" } }, "outputs": [ { "data": { "text/plain": [ "M 0.995608\n", "Mo 0.996745\n", "Co 0.996179\n", "W 0.986071\n", "C 0.998641\n", "dtype: float64" ] }, "execution_count": 39, "metadata": {}, "output_type": "execute_result" } ], "source": [ "E" ] }, { "cell_type": "code", "execution_count": 41, "id": "c76984fe", "metadata": { "ExecuteTime": { "end_time": "2024-09-19T11:33:42.646479Z", "start_time": "2024-09-19T11:33:42.630893Z" } }, "outputs": [], "source": [ "d = 1-E" ] }, { "cell_type": "code", "execution_count": 42, "id": "3ee067e1", "metadata": { "ExecuteTime": { "end_time": "2024-09-19T11:33:51.507647Z", "start_time": "2024-09-19T11:33:51.476294Z" } }, "outputs": [], "source": [ "w = d/d.sum()" ] }, { "cell_type": "code", "execution_count": 43, "id": "155a119d", "metadata": { "ExecuteTime": { "end_time": "2024-09-19T11:33:53.105864Z", "start_time": "2024-09-19T11:33:53.075112Z" } }, "outputs": [ { "data": { "text/plain": [ "M 0.164145\n", "Mo 0.121665\n", "Co 0.142802\n", "W 0.520594\n", "C 0.050794\n", "dtype: float64" ] }, "execution_count": 43, "metadata": {}, "output_type": "execute_result" } ], "source": [ "w" ] }, { "cell_type": "code", "execution_count": null, "id": "3d4bbf42", "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "Python 3 (ipykernel)", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.9.13" }, "toc": { "base_numbering": 1, "nav_menu": {}, "number_sections": true, "sideBar": true, "skip_h1_title": false, "title_cell": "Table of Contents", "title_sidebar": "Contents", "toc_cell": false, "toc_position": {}, "toc_section_display": true, "toc_window_display": false } }, "nbformat": 4, "nbformat_minor": 5 }